package net.linku.record;

import java.io.Serializable;

/**
 * 业务状态接口，用于表示不同业务状态的编码和消息。
 * 所有实现该接口的类需要提供具体的业务状态码和消息。
 *
 * @version 1.0
 * @date 2024/7/15
 */
public interface BizStatus extends Serializable {

    /**
     * 获取业务状态码
     *
     * @return 状态码
     */
    String getCode();

    /**
     * 获取业务状态消息
     *
     * @return 状态消息
     */
    String getMessage();

    /**
     * 获取一个默认的空业务状态对象
     *
     * @return 默认的空业务状态对象
     */
    static BizStatus emptyBizStatus() {
        return new BizStatus() {
            @Override
            public String getCode() {
                return "";
            }

            @Override
            public String getMessage() {
                return "";
            }
        };
    }

    /**
     * 获取一个默认的未知业务状态对象
     *
     * @return 默认的未知业务状态对象
     */
    static BizStatus unknownBizStatus() {
        return new BizStatus() {
            @Override
            public String getCode() {
                return "UNKNOWN";
            }

            @Override
            public String getMessage() {
                return "未知状态";
            }
        };
    }
}
